#include <iostream>
#include <vector>
using namespace std;

//计算数组arr中元素的平均值
double average(const vector<double> &arr) 
{
	double sum = 0;
	for (unsigned i = 0; i < arr.size(); i++)
		sum += arr[i];
	return sum / arr.size();
}

int main() 
{
	unsigned n;
	cout << "n = ";
	cin >> n;
	
	vector<double> arr(n);	//创建数组对象
	cout << "Please input " << n << " real numbers:" << endl;
	for (unsigned i = 0; i < n; i++)
		cin >> arr[i];
	
	cout << "Average = " << average(arr) << endl;
	return 0;
}






//#include <iostream>
//#include <cassert>
//using namespace std;
//
//class Point 
//{
//public:
////	Point() : x(0), y(0) 
////	{
////		cout<< this <<" Default Constructor called."<<endl;
////	}
//	Point(int x = 0, int y = 0) : x(x), y(y) 
//	{
//		cout<< this <<" Constructor called."<<endl;
//	}
//	~Point() 
//	{ 
//		cout<<this <<" Destructor called."<<endl; 
//	}
//	
//	int getX() const 
//	{
//		return x; 
//	}
//	int getY() const 
//	{ 
//		return y; 
//	}
//	void move(int newX, int newY) 
//	{
//		x = newX;
//		y = newY;
//	}
//	
//private:
//	int x, y;
//};
////动态数组类
//class ArrayOfPoints 
//{	
//public:
//	ArrayOfPoints(int size) : size(size) 
//	{
//		points = new Point[size];
//	}
//	~ArrayOfPoints() 
//	{
//		cout << "Deleting..." << endl;
//		delete[] points;     
//	}
//	Point& element(int index) 
//	{
//		assert(index >= 0 && index < size);	//断言下标不能出界
//		return points[index];
//	}
//private:
//	Point *points;	//指向动态数组首地址
//	int size;		//数组大小
//};
//
//int main() 
//{
//	int count;
//	cout << "Please enter the count of points: ";
//	cin >> count;
//	ArrayOfPoints points(count);	//创建对象数组
//	//通过访问数组元素的成员
//	points.element(0).move(5, 0);
//	//通过类访问数组元素的成员
//	points.element(1).move(15, 20);	
//	return 0;
//}





//#include <iostream>
//using namespace std;
//
////动态创建多维数组
//
//int main() 
//{
//	int (*cp)[9][8] = new int[7][9][8];
//	
//	for (int i = 0; i < 7; i++)
//		for (int j = 0; j < 9; j++)
//			for (int k = 0; k < 8; k++)
//				*(*(*(cp + i) + j) + k) =(i * 100 + j * 10 + k);
//	
//	for (int i = 0; i < 7; i++) {
//		for (int j = 0; j < 9; j++) 
//		{
//			for (int k = 0; k < 8; k++)
//				cout << cp[i][j][k] << "  ";
//			
//			cout << endl;
//		}
//		cout << endl;
//	}
//	
//	delete[] cp;
//	return 0;
//}
//












//#include<iostream>
//using namespace std;
//
//class Point 
//{
//public:
////	Point() : x(0), y(0) 
////	{
////		cout<< this <<" Default Constructor called."<<endl;
////	}
//	Point(int x = 0, int y = 0) : x(x), y(y) 
//	{
//		cout<< this <<" Constructor called."<<endl;
//	}
//	~Point() 
//	{ 
//		cout<<this <<" Destructor called."<<endl; 
//	}
//	
//	int getX() const 
//	{
//		return x; 
//	}
//	int getY() const 
//	{ 
//		return y; 
//	}
//	void move(int newX, int newY) 
//	{
//		x = newX;
//		y = newY;
//	}
//	
//private:
//	int x, y;
//};
//
////动态创建对象数组举例
//int main() 
//{
////	Point *ptr = new Point[2];	//创建对象数组
////	ptr[0].move(5, 10);  //通过指针访问数组元素的成员
////	ptr[1].move(15, 20); //通过指针访问数组元素的成员
////	cout << "Deleting..." << endl;
////	delete[] ptr;	    //删除整个对象数组
//	
//	char (*pf)[3] = new char[2][3];
//	pf[1][2] = 'w';
//	
//	return 0;
//}






















//#include <iostream>
//using namespace std;
//
//class Point 
//{
//public:
////	Point() : x(0), y(0) 
////	{
////		cout<< this <<" Default Constructor called."<<endl;
////	}
//	Point(int x = 0, int y = 0) : x(x), y(y) 
//	{
//		cout<< this <<" Constructor called."<<endl;
//	}
//	~Point() 
//	{ 
//		cout<<this <<" Destructor called."<<endl; 
//	}
//	
//	int getX() const 
//	{
//		return x; 
//	}
//	int getY() const 
//	{ 
//		return y; 
//	}
//	void move(int newX, int newY) 
//	{
//		x = newX;
//		y = newY;
//	}
//	
//private:
//	int x, y;
//};
//
//动态创建对象举例
//int main() 
//{
//	cout << "Step one: " << endl;
//	Point *ptr1 = new Point;//调用默认构造函数
//	delete ptr1;		//删除对象，自动调用析构函数
//	int* pa = new int(1);
//
//	cout << "Step two: " << endl;
//	ptr1 = new Point(1,2);	
//	delete ptr1;	
//	delete pa;
//	
//	return 0;
//}

